iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 19
0

今天我把random模組拿出來特別講,因為我們平時在程式設計時,很常需要用到亂數的部分,而且能應用的地方也非常多,所以除了簡單介紹外,也做個新手起步的小遊戲吧!/images/emoticon/emoticon34.gif
(感覺學習任何一種程式語言,random是讓人練習的第一步...)


Random 模組

下面就是一些random常用的語法:

random.random(),用於產生0~1之間的隨機小數,還沒學之前,從沒想過會是小數XD

>>> import random      #匯入random模組

>>> random.random()
0.6597262888580337

random.randint(a,b),用於產生指定範圍內的隨機整數。參數a為下限,b則是上限。

>>> random.randint(1,10)
3
>>> random.randint(1,10)
4

random.uniform(a,b),用於產生指定範圍內的隨機浮點數。a、b參數可互換。

>>> random.uniform(1,10)
7.09141630344087
>>> random.uniform(10,1)
4.668378256374945

random.choice(序列物件),從序列中隨機選擇一項。序列包含串列、元組、字串、清單等。

>>> random.choice([1,3,5,7,9])
3
>>> random.choice([1,3,5,7,9])
7
>>> random.choice(('apple','orange','pear','lemon','peach'))
'lemon'
>>> random.choice(('apple','orange','pear','lemon','peach'))
'pear'

random.randrange([start],stop[,step]),在指定範圍內(start到stop),按指定步數(step)遞增的集合中取一亂數

>>> random.randrange(1,10)    #step預設為1,相當於[1,2,3...,9,10]
6
>>> random.randrange(1,10,2)  #只會是奇數,step為2
5

random.sample(序列,k),從序列中隨機取得指定長度k的片斷。序列包含串列、元組、字串、清單等。

>>> fruit = ('apple','orange','pear','lemon','peach')
>>> I_love = random.sample(fruit,3)
>>> I_hate = random.sample(fruit,2)
>>> I_love
['peach', 'orange', 'pear']
>>> I_hate
['pear', 'apple']
-------------------
>>> a = 'python'
>>> random.sample(a,2)
['n', 'o']

random.shuffle(x[,random]),用於將清單中的元素打亂(洗牌)。

>>> fruit = ['apple','orange','pear','lemon','peach']   #tuple不能用0..0
>>> random.shuffle(fruit)
>>> fruit
['apple', 'peach', 'lemon', 'orange', 'pear']

小遊戲時間

猜數字小遊戲,要在1到1000中猜出正確的數字,只有10次機會。

import random

def hint(guess_num,ans):           #定義提示,回傳值
    if guess_num > ans:
        return 1
    elif guess_num < ans:
        return -1
    else:
        return 0

Answer = random.randint(1,1000)   #產生亂數1~1000
count = 0                         #計算次數


while count<10:
    left = 10-count               #幫你記還剩幾次
    guess = int(input('請猜數字(1~1000),還剩%d次:'%left))
    check = hint(guess,Answer)    #檢查是否相符
    if check == 1:                #用if判斷回傳值結果
        print ("太大了!")
    elif check == -1:
        print ("太小了!")
    else:
        break                    #猜對直接跳出迴圈
    count += 1
if count==10:                    #玩了10次失敗
    print ("遊戲結束,你失敗了。")
else:
    print ("恭喜猜對了~~")

參考資料

  • 書名-大數據起步從Python開始 /吳萍-編著

上一篇
Day18-標準函式庫
下一篇
Day20-匯入與套件
系列文
Python 30天學習日誌30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言